package com.casa_apoio.estoque.mode.entity;

import com.casa_apoio.model.entity.Funcionario;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.annotations.ForeignKey;

@Entity
public class CabEstoque implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer idCabEstoque;
    @Temporal(TemporalType.DATE)
    private Date dataMovimentacao;
    @Temporal(TemporalType.DATE)
    private Date dataNF;
    @Column(length = 15)
    private String numDocumento;
    private boolean finalizado;
    private double vlrTotal;

    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    @ForeignKey(name = "estoqueFuncionario")
    @JoinColumn(name = "idFuncionario", referencedColumnName = "idFuncionario")
    private Funcionario funcionario;

    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    @ForeignKey(name = "estoqueFornecedor")
    @JoinColumn(name = "idFornecedor", referencedColumnName = "idFornecedor")
    private Fornecedor fornecedor;
  
    public CabEstoque() {
        funcionario = new Funcionario();
        fornecedor = new Fornecedor();
    }

    public Integer getIdCabEstoque() {
        return idCabEstoque;
    }

    public void setIdCabEstoque(Integer idCabEstoque) {
        this.idCabEstoque = idCabEstoque;
    }

    public Date getDataMovimentacao() {
        return dataMovimentacao;
    }

    public void setDataMovimentacao(Date dataMovimentacao) {
        this.dataMovimentacao = dataMovimentacao;
    }

    public Date getDataNF() {
        return dataNF;
    }

    public void setDataNF(Date dataNF) {
        this.dataNF = dataNF;
    }

    public String getNumDocumento() {
        return numDocumento;
    }

    public void setNumDocumento(String numDocumento) {
        this.numDocumento = numDocumento;
    }

    public boolean isFinalizado() {
        return finalizado;
    }

    public void setFinalizado(boolean finalizado) {
        this.finalizado = finalizado;
    }

    public double getVlrTotal() {
        return vlrTotal;
    }

    public void setVlrTotal(double vlrTotal) {
        this.vlrTotal = vlrTotal;
    }

    public Funcionario getFuncionario() {
        return funcionario;
    }

    public void setFuncionario(Funcionario funcionario) {
        this.funcionario = funcionario;
    }

    public Fornecedor getFornecedor() {
        return fornecedor;
    }

    public void setFornecedor(Fornecedor fornecedor) {
        this.fornecedor = fornecedor;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 89 * hash + (this.idCabEstoque != null ? this.idCabEstoque.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final CabEstoque other = (CabEstoque) obj;
        if (this.idCabEstoque != other.idCabEstoque && (this.idCabEstoque == null || !this.idCabEstoque.equals(other.idCabEstoque))) {
            return false;
        }
        return true;
    }
    /*
     public List<Estoque> getEstoques() {
     return estoques;
     }

     public void setEstoques(List<Estoque> estoques) {
     this.estoques = estoques;
     }
     */
}
